package com.chorye.function.schedule.controller;

import com.chorye.function.schedule.entity.QuartzEntity;
import com.chorye.function.schedule.entity.QuartzResp;
import com.chorye.function.schedule.service.QuartzService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * 定时任务控制层
 *
 * @author Chorye
 */
@Controller
@RequestMapping("/quartz")
public class QuartzController {

    /**
     * 定时任务服务层
     */
    @Autowired
    private QuartzService quartzService;

    /**
     * 查询所有的定时任务列表
     *
     * @return 页面路径
     */
    @GetMapping("/list")
    public String list() {
        return "schedule/list";
    }

    /**
     * 查询所有的定时任务列表
     *
     * @param pageNo   当前页数
     * @param pageSize 每页条数
     * @return 页面路径
     */
    @GetMapping("/list_data")
    @ResponseBody
    public Map<String, Object> list(@RequestParam(value = "page", defaultValue = "1") Integer pageNo,
                                    @RequestParam(value = "limit", defaultValue = "10") Integer pageSize) {
        return quartzService.list(pageNo, pageSize);
    }

    /**
     * 操作定时任务、包含：新增、暂停、恢复、删除操作
     *
     * @param quartzEntity 定时任务实体
     * @return 操作的响应信息
     */
    @PostMapping(value = "/operate", produces = "application/json; charset=utf-8")
    @ResponseBody
    public QuartzResp operate(QuartzEntity quartzEntity) {
        return quartzService.dispatcher(quartzEntity);
    }

    /**
     * 检查任务的名称、触发器的名称是否被占用
     *
     * @param quartzEntity 定时任务实体类
     * @return 检查的结果
     */
    @PostMapping("/check")
    @ResponseBody
    public QuartzResp check(QuartzEntity quartzEntity) {
        return quartzService.checkName(quartzEntity);
    }
}